4.2 Diccionarios (dict)
1️⃣ ¿Qué es un diccionario?
Un diccionario en Python es una estructura de datos que permite almacenar pares de elementos: una clave (key) y un valor (value). Cada clave se asocia a un valor, y esta relación se denomina par clave–valor.
Los diccionarios son colecciones no ordenadas (hasta Python 3.6 lo eran, a partir de 3.7 conservan el orden de inserción) y mutables, lo que significa que pueden modificarse tras su creación.
alumno = {"nombre": "Ana", "edad": 20, "curso": "Python"}
print(alumno)
# {'nombre': 'Ana', 'edad': 20, 'curso': 'Python'}
Cada par tiene una clave (por ejemplo "nombre") y un valor asociado ("Ana").
A diferencia de una lista, los elementos no se acceden por índice, sino por su clave.
2️⃣ Características principales de los diccionarios
| Propiedad | Descripción |
|---|---|
| Estructura | Colección de pares clave–valor. |
| Claves únicas | No puede haber claves repetidas. |
| Mutable | Se pueden añadir, modificar o eliminar elementos. |
| Desordenado | No tiene índices numéricos, se accede por clave. |
| Claves inmutables | Las claves deben ser de tipo inmutable (cadena, número, tupla, frozenset…). |
3️⃣ Cómo crear un diccionario
🟩 Sintaxis con llaves {}
La forma más común es definir los pares entre llaves {}, separados por comas y usando dos puntos : entre clave y valor.
persona = {"nombre": "Luis", "edad": 25, "ciudad": "Madrid"}
🟦 Con la función dict()
También se puede usar la función dict() indicando los pares como argumentos con nombre o pasando una lista de tuplas.
# Con argumentos nombrados
datos = dict(nombre="Ana", edad=22, curso="Python")
# Con lista de tuplas
pares = dict([("nombre", "Ana"), ("edad", 22)])
🟨 Diccionario vacío
vacio = {}
# o bien
vacio = dict()
4️⃣ Acceso y modificación de elementos
🟩 Acceder a un valor
Se accede al valor de una clave escribiendo su nombre entre corchetes [].
alumno = {"nombre": "Ana", "edad": 20, "curso": "Python"}
print(alumno["nombre"])
# Ana
La expresión alumno["nombre"] devuelve el valor asociado a la clave "nombre".
Si la clave no existe, Python genera un error KeyError.
🟦 Acceso seguro con get()
Para evitar errores cuando una clave podría no existir, se utiliza el método get().
print(alumno.get("nota", "No disponible"))
# No disponible
Si "nota" no está en el diccionario, get() devuelve el segundo argumento (por defecto, None).
🟨 Añadir o modificar elementos
Si se asigna un valor a una clave existente, se actualiza. Si la clave no existía, se añade.
alumno["nota"] = 9.5
alumno["curso"] = "Avanzado"
print(alumno)
# {'nombre': 'Ana', 'edad': 20, 'curso': 'Avanzado', 'nota': 9.5}
🟧 Eliminar elementos
| Método | Descripción | Ejemplo |
|---|---|---|
pop(clave) | Elimina una clave y devuelve su valor. | alumno.pop("edad") |
del dicc[clave] | Elimina la clave directamente. | del alumno["curso"] |
clear() | Vacía el diccionario. | alumno.clear() |
alumno = {"nombre": "Ana", "edad": 20, "curso": "Python"}
edad = alumno.pop("edad")
print(edad)
print(alumno)
# 20
# {'nombre': 'Ana', 'curso': 'Python'}
5️⃣ Recorrido de diccionarios
Los diccionarios pueden recorrerse fácilmente con bucles for.
🟩 Recorrer solo las claves
for clave in alumno:
print(clave)
🟦 Recorrer claves y valores con items()
for clave, valor in alumno.items():
print(clave, "→", valor)
# nombre → Ana
# curso → Python
🟨 Solo valores con values()
for valor in alumno.values():
print(valor)
6️⃣ Métodos principales de los diccionarios
| Método | Descripción | Ejemplo | Resultado |
|---|---|---|---|
keys() | Devuelve una vista con las claves. | alumno.keys() | dict_keys(['nombre','curso']) |
values() | Devuelve los valores. | alumno.values() | dict_values(['Ana','Python']) |
items() | Devuelve pares (clave, valor). | alumno.items() | dict_items([('nombre','Ana'), ('curso','Python')]) |
get(clave[, defecto]) | Devuelve el valor o defecto. | alumno.get("nota", 0) | 0 |
pop(clave) | Elimina y devuelve un valor. | alumno.pop("curso") | 'Python' |
popitem() | Elimina y devuelve una tupla con el último para clave-valor. | alumno.popitem() | ('curso', 'Python') |
update(otro_dicc) | Fusiona o actualiza con otro diccionario. | alumno.update({"edad": 21}) | Actualiza edad. |
clear() | Vacía el diccionario. | alumno.clear() | {} |
copy() | Devuelve una copia superficial. | nuevo = alumno.copy() | Nueva copia. |
deepcopy() | Devuelve una copia profunda. | copia_total = copy.deepcopy(alumno) | Copia totalmente independiente de la original. |